/*
* Copyright (C) 2011 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.traceview;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import java.util.HashMap;
import java.util.Map.Entry;
public class PropertiesDialog extends Dialog {
private HashMap<String, String> mProperties;
public PropertiesDialog(Shell parent) {
super(parent);
setShellStyle(SWT.DIALOG_TRIM | SWT.RESIZE);
}
public void setProperties(HashMap<String, String> properties) {
mProperties = properties;
}
@Override
protected void createButtonsForButtonBar(Composite parent) {
createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
}
@Override
protected Control createDialogArea(Composite parent) {
Composite container = (Composite) super.createDialogArea(parent);
GridLayout gridLayout = new GridLayout(1, false);
gridLayout.marginWidth = 0;
gridLayout.marginHeight = 0;
gridLayout.horizontalSpacing = 0;
gridLayout.verticalSpacing = 0;
container.setLayout(gridLayout);
TableViewer tableViewer = new TableViewer(container, SWT.HIDE_SELECTION
| SWT.V_SCROLL | SWT.BORDER);
tableViewer.getTable().setLinesVisible(true);
tableViewer.getTable().setHeaderVisible(true);
TableViewerColumn propertyColumn = new TableViewerColumn(tableViewer, SWT.NONE);
propertyColumn.getColumn().setText("Property");
propertyColumn.setLabelProvider(new ColumnLabelProvider() {
@Override
@SuppressWarnings("unchecked")
public String getText(Object element) {
Entry<String, String> entry = (Entry<String, String>) element;
return entry.getKey();
}
});
propertyColumn.getColumn().setWidth(400);
TableViewerColumn valueColumn = new TableViewerColumn(tableViewer, SWT.NONE);
valueColumn.getColumn().setText("Value");
valueColumn.setLabelProvider(new ColumnLabelProvider() {
@Override
@SuppressWarnings("unchecked")
public String getText(Object element) {
Entry<String, String> entry = (Entry<String, String>) element;
return entry.getValue();
}
});
valueColumn.getColumn().setWidth(200);
tableViewer.setContentProvider(new ArrayContentProvider());
tableViewer.setInput(mProperties.entrySet().toArray());
GridData gridData = new GridData();
gridData.verticalAlignment = GridData.FILL;
gridData.horizontalAlignment = GridData.FILL;
gridData.grabExcessHorizontalSpace = true;
gridData.grabExcessVerticalSpace = true;
tableViewer.getControl().setLayoutData(gridData);
return container;
}
}